《路由器开发-OpenWrt系统开发》第3章 Openwrt下载及配置

开发环境:
主机:Ubuntu16.04
Openwrt:Openwrt19.07

3.1安装相关工具和库

先更新源:
sudo apt-get update

1)安装git工具
sudo apt-get install git git-core

2)安装依赖的库文件(两种方法)
sudo apt-get install gcc g++ binutils patch bzip2 flex bison cmake make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk

3.2下载OpenWrt源码

编译OpenWrt首先需要下载源码,OpenWrt的源码是通过git下载,OpenWrt目前已经很好的支持了MT7620、MT7821等芯片,因此OpenWrt系统完全可以用于MT7620等开发板。下面开始OpenWrt学习之旅。

(获取源码)
git clone git://github.com/openwrt/openwrt.git
或者
git clone https://github.com/openwrt/openwrt.git
或者
git clone https://github.com/lede-project/source.git

输入命令等待下载即可。
更新代码tag:
git fetch origin

Yqou38.png

列出可以使用的版本tag:
git tag

YqoMjg.png

【注意】q 键结束
或者直接获取最新发布版本:
git describe –tags $(git rev-list –tags –max-count=1)

YqoNCV.png

查看本地分支情况,当前是:v19.07.2。
git branch

YqosER.png

查看远程分支情况,当前是:master。

git branch -r

Yqo28K.png

选择并切换到指定的版本tag:git checkout -f 比如:
git checkout -f v19.07.2

Yqo75t.png

下载完OpenWrt的源码后,为了使OpenWrt支持更多的软件,需要更新和安装其它源上面的软件。
./scripts/feeds update -a
./scripts/feeds install -a

一切就绪,接下来就可以开始编译了。
【注意】OpenWrt默认是用非root用户名来编译的,因此一定不要用root权限来编译OpenWrt系统,对于Ubuntu系统,不加sudo即可。

3.3配置OpenWrt源码

在编译OpenWrt系统之前,我们首先要对它进行配置,让它能够支持我们的MT7620A开发板。OpenWrt系统也是一个Linux系统,因此它的配置方法和Linux的完全一样,也是通过make menuconfig来进行配置。

make menuconfig

我们就可以通过方向键来选择配置选项,通过空格键来选择配置状态。当执行完上命令后,便会弹出如图。

YqTQG6.png

优酷YKL1C采用的CPU MT7620A 128MSDRAM、32MFlash,因此,为了让OpenWrt系统能成功的在我们的开发板上运行起来,我们需要做如下配置。

1).选择CPU型号
Target System (MediaTek Ralink MIPS) —>

2).选择CPU子型号
Subtarget (MT7620 based boards) —>

3).选择具体路由器型号
Target Profile (YOUKU YK1) —>

然后保存退出,这样就配置完成了,当然这只是一个最简单的配置,我们首先是要在开发板把OpenWrt系统跑起来,更复杂的配置、应用,在以后的课程中会一点一点的教给大家。

3.4编译

最后执行make V=99,开始漫长的编译,编译时间由电脑配置决定,由于编译时,需要的软件是从网络上面下载,所以这里要求电脑必须能够上网。V=99意思显示所有信息。
make V=99

在编译前,可是用以下命令将源码先下载:
make download

第一次编译大概需要4、5个小时,以后再次编译,则分分钟搞定。编译出来的镜像位于bin/targets/ramips/mt7620目录下面。
ls bin/targets/ramips/mt7620

YqTrQS.png

其中openwrt-ramips-mt7620-youku-yk1-squashfs-sysupgrade.bin这个就是我们要的镜像。烧写到板子上面即可启动。这样最简单OpenWrt就可以启动了,不过好多功能都没有,一步一步来,不断深入。

注意:如果觉得自己从头安装Ubuntu系统,再装相应的工具、库文件,再从官网下载OpenWrt系统源码非常麻烦,那么可以直接使用我提供的环境。该环境,直接解压开,然后用虚拟机VMware打开即可。里面已经安装了相应的工具和库文件,并且已经下载OpenWrt系统源码。

【注】openwrt的sysupgrade和factory固件的区别

openwrt的固件一般分两种类型:factory原厂固件、sysupgrade固件
factory多了一些验证的东西,用于在原厂固件的基础上进行升级。

普通家用路由一般不是openwrt固件,如果要将家用路由升级为openwrt固件,就可以用factory刷到路由上。sysupgrade是在openwrt路由基础上升级固件,无论你是原厂固件或者本身就是openwrt固件,要升级到openwrt,factory都适用,但是sysupgrade只能用在升级,TTL救砖的时候就不能用sysupgrade。sysupgrade不包含数据分区,factory带,factory预留原厂分区,sysupgrade只包含openwrt分区。

有一个公式:sysupgrade.bin+空闲空间+系统的配置空间=factory.bin的大小
在openwrt wiki中有专门描述sysupgrade:

sysupgrade替换linux内核和squash文件系统,擦除整个jffs2部分。能保留配置文件,但不能保留二进制安装文件。

描述了几种sysupgrade方法,但没有描述在web界面的更新,也没有描述factory和sysupgrade的区别。

描述的更新方法为:
sysupgrade -v /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin
mtd -r write /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin firmware
nc -l -p 1234 | mtd write – firmware

【总结】
新的刷factory就是把firmware区全部写一遍 sysgrade是写固件区。
openwrt编译固件一般会出来两个固件:openwrt-XXXXXXX-factory.bin和openwrt-XXXXXXX-sysupgrade.bin。

Related posts

Leave a Comment